/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package usuario;

/**
 *
 * @author Deico
 */

import conexion.DB;
import java.util.Date;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import javax.swing.JOptionPane;

public class mensajes {
    
    public static void nuevoMensaje(String from,String asunto,String mensaje,String to,java.util.Date fecha){
        
        try {

            PreparedStatement prep = DB.DB_CONNECTION.prepareStatement(
           "insert into mensajes (`from`,asunto,`contenido`,`to`,fecha) values (?,?,?,?,?);");
             
            prep.setString(1,from);
            prep.setString(2,asunto);
            prep.setString(3,mensaje);
            prep.setString(4,to);
            prep.setDate(5,new java.sql.Date(fecha.getTime()));
            
            prep.executeUpdate();
            
            } catch (SQLException ex) {
            System.out.println(ex);
        }
        
    }
    
    public static Object[] getMensaje(String asunto){
        
        Object[] mensaje = new Object[6];
        try {

          java.sql.Statement stat = DB.DB_CONNECTION.createStatement();
          ResultSet rs = stat.executeQuery("select * from mensajes where asunto='"+asunto+"';");
          
          while (rs.next()) {
          
              mensaje[0]= rs.getInt("id");
              mensaje[1]= rs.getString("from");
              mensaje[2]= rs.getString("asunto");
              mensaje[3]= rs.getString("contenido");
              mensaje[4]= rs.getString("to");
              mensaje[5]= rs.getDate("fecha");
              
          }
          rs.close();
          

         } catch (SQLException ex) { 
         JOptionPane.showMessageDialog(null, ex, "Error", JOptionPane.ERROR_MESSAGE);
         }
        
        return mensaje;
    }
    
    
    
     public static  ArrayList<Object[]> getListaMensajesRecibidos(String user){
        

         ArrayList<Object[]> lista = new ArrayList();
         
        try {

          java.sql.Statement stat = DB.DB_CONNECTION.createStatement();
          ResultSet rs = stat.executeQuery("SELECT * FROM mensajes where mensajes.`to`='"+user+"';");
          while (rs.next()) {
          
              lista.add(new Object[]{rs.getInt("id"),rs.getString("from"),rs.getString("asunto"),rs.getString("contenido"),
                  rs.getString("to"),rs.getDate("fecha")
              });
              
          }
          rs.close();
          

         } catch (SQLException ex) { 
         JOptionPane.showMessageDialog(null, ex, "Error", JOptionPane.ERROR_MESSAGE);
         }
        
        return lista;
    }
     
     
     public static  ArrayList<Object[]> getListaMensajesEnviados(String user){
        

         ArrayList<Object[]> lista = new ArrayList();
         
        try {

          java.sql.Statement stat = DB.DB_CONNECTION.createStatement();
          ResultSet rs = stat.executeQuery("SELECT * FROM mensajes where mensajes.`from`='"+user+"';");
          while (rs.next()) {
          
              lista.add(new Object[]{rs.getInt("id"),rs.getString("from"),rs.getString("asunto"),rs.getString("contenido"),
                  rs.getString("to"),rs.getDate("fecha")
              });
              
          }
          rs.close();
          

         } catch (SQLException ex) { 
         JOptionPane.showMessageDialog(null, ex, "Error", JOptionPane.ERROR_MESSAGE);
         }
        
        return lista;
    }
     
     public static  ArrayList<Object[]> getListaMensajesTest(){
        

         ArrayList<Object[]> lista = new ArrayList();
         
        try {

          java.sql.Statement stat = DB.DB_CONNECTION.createStatement();
          ResultSet rs = stat.executeQuery("SELECT * FROM mensajes;");
          while (rs.next()) {
          
              lista.add(new Object[]{rs.getInt("id"),rs.getString("from"),rs.getString("asunto"),rs.getString("contenido"),
                  rs.getString("to"),rs.getDate("fecha")
              });
              
          }
          rs.close();
          

         } catch (SQLException ex) { 
         JOptionPane.showMessageDialog(null, ex, "Error", JOptionPane.ERROR_MESSAGE);
         }
        
        return lista;
    }
     
     public static  ArrayList<Object[]> getListaMensajesFecha(int diferenciaEnDias){
        

         SimpleDateFormat formatoDeFecha = new SimpleDateFormat("yyyy-MM-dd");
         Calendar calendar =Calendar.getInstance(); //obtiene la fecha de hoy 
         String fecha1 = formatoDeFecha.format(calendar.getTime());
         calendar.add(Calendar.DATE, -diferenciaEnDias);
         String fecha2 = formatoDeFecha.format(calendar.getTime());
         ArrayList<Object[]> lista = new ArrayList();
         
        try {

          java.sql.Statement stat = DB.DB_CONNECTION.createStatement();
          ResultSet rs = stat.executeQuery("SELECT * FROM mensajes WHERE fecha BETWEEN '"+fecha2+"' AND '"+fecha1+"';");
          System.out.println(fecha2+" "+fecha1);
          while (rs.next()) {
          
              lista.add(new Object[]{rs.getInt("id"),rs.getString("from"),rs.getString("asunto"),rs.getString("contenido"),
                  rs.getString("to"),rs.getDate("fecha")
              });
              
          }
          rs.close();
          

         } catch (SQLException ex) { 
         JOptionPane.showMessageDialog(null, ex, "Error", JOptionPane.ERROR_MESSAGE);
         }
        
        return lista;
    }
     
     
    
    
}
